home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / g_man / cat3 / OpenGL / glselectbuffer.z / glselectbuffer
Encoding:
Text File  |  2002-10-03  |  8.3 KB  |  133 lines

  1.  
  2.  
  3.  
  4. ggggllllSSSSeeeelllleeeeccccttttBBBBuuuuffffffffeeeerrrr((((3333GGGG))))             OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee             ggggllllSSSSeeeelllleeeeccccttttBBBBuuuuffffffffeeeerrrr((((3333GGGG))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ggggllllSSSSeeeelllleeeeccccttttBBBBuuuuffffffffeeeerrrr - establish a buffer for selection mode values
  10.  
  11.  
  12. CCCC SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN
  13.      void ggggllllSSSSeeeelllleeeeccccttttBBBBuuuuffffffffeeeerrrr( GLsizei _s_i_z_e,
  14.                           GLuint *_b_u_f_f_e_r )
  15.  
  16.  
  17. PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
  18.      _s_i_z_e    Specifies the size of _b_u_f_f_e_r.
  19.  
  20.      _b_u_f_f_e_r  Returns the selection data.
  21.  
  22. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  23.      ggggllllSSSSeeeelllleeeeccccttttBBBBuuuuffffffffeeeerrrr has two arguments:  _b_u_f_f_e_r is a pointer to an array of
  24.      unsigned integers, and _s_i_z_e indicates the size of the array.  _b_u_f_f_e_r
  25.      returns values from the name stack (see ggggllllIIIInnnniiiittttNNNNaaaammmmeeeessss, ggggllllLLLLooooaaaaddddNNNNaaaammmmeeee,
  26.      ggggllllPPPPuuuusssshhhhNNNNaaaammmmeeee) when the rendering mode is GGGGLLLL____SSSSEEEELLLLEEEECCCCTTTT (see ggggllllRRRReeeennnnddddeeeerrrrMMMMooooddddeeee).
  27.      ggggllllSSSSeeeelllleeeeccccttttBBBBuuuuffffffffeeeerrrr must be issued before selection mode is enabled, and it
  28.      must not be issued while the rendering mode is GGGGLLLL____SSSSEEEELLLLEEEECCCCTTTT.
  29.  
  30.      A programmer can use selection to determine which primitives are drawn
  31.      into some region of a window.  The region is defined by the current
  32.      modelview and perspective matrices.
  33.  
  34.      In selection mode, no pixel fragments are produced from rasterization.
  35.      Instead, if a primitive or a raster position intersects the clipping
  36.      volume defined by the viewing frustum and the user-defined clipping
  37.      planes, this primitive causes a selection hit.  (With polygons, no hit
  38.      occurs if the polygon is culled.)  When a change is made to the name
  39.      stack, or when ggggllllRRRReeeennnnddddeeeerrrrMMMMooooddddeeee is called, a hit record is copied to _b_u_f_f_e_r
  40.      if any hits have occurred since the last such event (name stack change or
  41.      ggggllllRRRReeeennnnddddeeeerrrrMMMMooooddddeeee call).  The hit record consists of the number of names in
  42.      the name stack at the time of the event, followed by the minimum and
  43.      maximum depth values of all vertices that hit since the previous event,
  44.      followed by the name stack contents, bottom name first.
  45.  
  46.      Depth values (which are in the range [0,1]) are multiplied by 2^32 - 1,
  47.      before being placed in the hit record.
  48.  
  49.      An internal index into _b_u_f_f_e_r is reset to 0 whenever selection mode is
  50.      entered.  Each time a hit record is copied into _b_u_f_f_e_r, the index is
  51.      incremented to point to the cell just past the end of the block of names
  52.      - that is, to the next available cell.  If the hit record is larger than
  53.      the number of remaining locations in _b_u_f_f_e_r, as much data as can fit is
  54.      copied, and the overflow flag is set.  If the name stack is empty when a
  55.      hit record is copied, that record consists of 0 followed by the minimum
  56.      and maximum depth values.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ggggllllSSSSeeeelllleeeeccccttttBBBBuuuuffffffffeeeerrrr((((3333GGGG))))             OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee             ggggllllSSSSeeeelllleeeeccccttttBBBBuuuuffffffffeeeerrrr((((3333GGGG))))
  71.  
  72.  
  73.  
  74.      To exit selection mode, call ggggllllRRRReeeennnnddddeeeerrrrMMMMooooddddeeee with an argument other than
  75.      GGGGLLLL____SSSSEEEELLLLEEEECCCCTTTT.  Whenever ggggllllRRRReeeennnnddddeeeerrrrMMMMooooddddeeee is called while the render mode is
  76.      GGGGLLLL____SSSSEEEELLLLEEEECCCCTTTT, it returns the number of hit records copied to _b_u_f_f_e_r, resets
  77.      the overflow flag and the selection buffer pointer, and initializes the
  78.      name stack to be empty.  If the overflow bit was set when ggggllllRRRReeeennnnddddeeeerrrrMMMMooooddddeeee
  79.      was called, a negative hit record count is returned.
  80.  
  81. NNNNOOOOTTTTEEEESSSS
  82.      The contents of _b_u_f_f_e_r is undefined until ggggllllRRRReeeennnnddddeeeerrrrMMMMooooddddeeee is called with an
  83.      argument other than GGGGLLLL____SSSSEEEELLLLEEEECCCCTTTT.
  84.  
  85.      ggggllllBBBBeeeeggggiiiinnnn/ggggllllEEEEnnnndddd primitives and calls to ggggllllRRRRaaaasssstttteeeerrrrPPPPoooossss can result in hits.
  86.  
  87. EEEERRRRRRRROOOORRRRSSSS
  88.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _s_i_z_e is negative.
  89.  
  90.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if ggggllllSSSSeeeelllleeeeccccttttBBBBuuuuffffffffeeeerrrr is called while the
  91.      render mode is GGGGLLLL____SSSSEEEELLLLEEEECCCCTTTT, or if ggggllllRRRReeeennnnddddeeeerrrrMMMMooooddddeeee is called with argument
  92.      GGGGLLLL____SSSSEEEELLLLEEEECCCCTTTT before ggggllllSSSSeeeelllleeeeccccttttBBBBuuuuffffffffeeeerrrr is called at least once.
  93.  
  94.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if ggggllllSSSSeeeelllleeeeccccttttBBBBuuuuffffffffeeeerrrr is executed between
  95.      the execution of ggggllllBBBBeeeeggggiiiinnnn and the corresponding execution of ggggllllEEEEnnnndddd.
  96.  
  97. AAAASSSSSSSSOOOOCCCCIIIIAAAATTTTEEEEDDDD GGGGEEEETTTTSSSS
  98.      ggggllllGGGGeeeetttt with argument GGGGLLLL____NNNNAAAAMMMMEEEE____SSSSTTTTAAAACCCCKKKK____DDDDEEEEPPPPTTTTHHHH
  99.      ggggllllGGGGeeeetttt with argument GGGGLLLL____SSSSEEEELLLLEEEECCCCTTTTIIIIOOOONNNN____BBBBUUUUFFFFFFFFEEEERRRR____SSSSIIIIZZZZEEEE
  100.      ggggllllGGGGeeeettttPPPPooooiiiinnnntttteeeerrrrvvvv with argument GGGGLLLL____SSSSEEEELLLLEEEECCCCTTTTIIIIOOOONNNN____BBBBUUUUFFFFFFFFEEEERRRR____PPPPOOOOIIIINNNNTTTTEEEERRRR
  101.  
  102.  
  103. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  104.      ggggllllFFFFeeeeeeeeddddbbbbaaaacccckkkkBBBBuuuuffffffffeeeerrrr, ggggllllIIIInnnniiiittttNNNNaaaammmmeeeessss, ggggllllLLLLooooaaaaddddNNNNaaaammmmeeee, ggggllllPPPPuuuusssshhhhNNNNaaaammmmeeee, ggggllllRRRReeeennnnddddeeeerrrrMMMMooooddddeeee
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.